package com.sh.data.engine.domain.taskalarm.model.domain;

import com.sh.data.engine.domain.base.model.BaseDomain;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
 * @author tinglan.ys
 * @description:
 * @date 2022/3/31 下午3:04
 */
@Data
@NoArgsConstructor
@SuperBuilder
public class TaskAlarmConfigDomain extends BaseDomain {

    private String projectId;

    /**
     * 监控主题 0-离线计算 1-实时计算 2-数据质量 3-数据集成
     */
    private Integer subjectType;

    /**
     * 通知人
     */
    private String receiverId;

    /**
     * 通知人名字
     */
    private String receiverName;

    /**
     * 通知人Email
     */
    private String receiverEmail;

    /**
     * 通知方式 0-邮件
     */
    private Integer receiveType;

    /**
     * 创建人名字
     */
    private String creatorName;

    /**
     * 告警对象
     */
    private String taskObject;

    /**
     * 报警原因
     */
    private Integer alarmType;

    /**
     * 报警原因
     */
    private String alarmTypeName;

    /**
     * 离线计算的是否打断任务 0-不打断 1-打断
     */
    private Integer interrupt;
    /**
     * 离线计算的运行超时(分钟)
     */
    private Integer timeout;
    /**
     * 离线计算的未完成 yyyy-MM-dd HH:mm:ss
     */
    private String undone;
    /**
     * 离线计算的占用资源阈值
     */
    private Integer threshold;

    private Long tblId;

    private String tblIdStr;

    private String taskType;
    /**
     * 数据集成的任务名称
     */
    private Integer taskName;
    /**
     * 数据集成的任务Id
     */
    private Integer taskId;
    /**
     * 数据集成的失败条数
     */
    private Integer failNum;

    @Data
    public static class OfflineComputing {
        /**
         * 离线计算 工作流程
         */
        private Long nodeId;

        private String nodeName;

        /**
         * 离线计算的是否打断任务 0-不打断 1-打断
         */
        private Integer isInterrupt;

        /**
         * 离线计算的运行超时(分钟)
         */
        private Integer timeout;

        /**
         * 离线计算的未完成 yyyy-MM-dd HH:mm:ss
         */
        private String unFinishedTime;

        /**
         * 离线计算的占用资源阈值
         */
        private Double threshold;
    }

    @Data
    public static class RealTimeComputing {
        /**
         * 实时计算的工作流程
         */
        private Long id;

        private String name;
        /** 实时计算 告警对象 就是nodeId对应的name */
        // private String ssjsNodeName;

    }

    @Data
    public static class DataQuality {
        /**
         * 数据质量的数据表
         */
        private Long sjzlTblId;

        /** 数据质量的数据表名字 */
        // private String sjzlTblName;

    }

    @Data
    public static class DataIntegration {
        /**
         * 数据集成的任务类型 0-离线采集 1-实时采集 3-http 4 websevice
         */
        private Integer syncType;

        /**
         * 数据集成的任务名称
         */
        private String syncTaskName;

        /**
         * 数据集成的任务Id
         */
        private Long taskId;

        /**
         * 数据集成的失败条数
         */
        private Integer failedNum;
    }
}
